package entity.Encomienda;

import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import dto.Encomienda.DTO_Encomienda;
import dto.Encomienda.DTO_Envio;
import dto.Encomienda.DTO_EnvioPropio;
import entity.Vehiculo.Entity_Vehiculo;

@Entity
@Table(name="Envio")
@DiscriminatorValue("PO")
public class Entity_EnvioPropio extends Entity_Envio {
	@ManyToOne
	@JoinColumn(name="idVehiculo")
	private Entity_Vehiculo vehiculo;
	@OneToOne(mappedBy= "envio")
	private Entity_HojaDeRuta hojaRuta;
	private Date fechaSalida;
	private Time horaSalida;
	private Date fechaLlegada;
	private Time horaLlegada;
	
	
	public Entity_EnvioPropio() {
		
	}
	public Entity_Vehiculo getVehiculo() {
		return vehiculo;
	}
	public void setVehiculo(Entity_Vehiculo vehiculo) {
		this.vehiculo = vehiculo;
	}
	public Entity_HojaDeRuta getHojaRuta() {
		return hojaRuta;
	}
	public void setHojaRuta(Entity_HojaDeRuta hojaRuta) {
		this.hojaRuta = hojaRuta;
	}
	public Date getFechaSalida() {
		return fechaSalida;
	}
	public void setFechaSalida(Date fechaSalida) {
		this.fechaSalida = fechaSalida;
	}
	public Time getHoraSalida() {
		return horaSalida;
	}
	public void setHoraSalida(Time horaSalida) {
		this.horaSalida = horaSalida;
	}
	public Date getFechaLlegada() {
		return fechaLlegada;
	}
	public void setFechaLlegada(Date fechaLlegada) {
		this.fechaLlegada = fechaLlegada;
	}
	public Time getHoraLlegada() {
		return horaLlegada;
	}
	public void setHoraLlegada(Time horaLlegada) {
		this.horaLlegada = horaLlegada;
	}
	
	@Override
	public DTO_Envio toDTO() {
		DTO_Envio e = new DTO_EnvioPropio();
		e.setId(this.getId());
		e.setEstado(this.getEstado());
		e.setPosicionActual(this.getPosicionActual());		
		
		List<DTO_Encomienda> lista = new ArrayList<DTO_Encomienda>();
		for(Entity_Encomienda en:this.getEncomiendas())
			lista.add(en.toDTO());
		e.setEncomiendas(lista);

		((DTO_EnvioPropio) e).setIdVehiculo(this.getVehiculo().getId());

		((DTO_EnvioPropio) e).setIdHojaDeRuta(this.getHojaRuta().getId());
		((DTO_EnvioPropio) e).setFechaSalida(this.getFechaSalida());
		((DTO_EnvioPropio) e).setHoraSalida(this.getHoraSalida());
		((DTO_EnvioPropio) e).setFechaLlegada(this.getFechaLlegada());
		((DTO_EnvioPropio) e).setHoraLlegada(this.getHoraLlegada());

		return e;
	}
}
